//倒入服务器模块
var express = require('express')
//倒入模版模块
var swig  = require('swig');
//倒入mysql数据库
var mysql = require('mysql')
//post
const bodyParser = require('body-parser')
//导入cookie 模块
const Cookies = require("cookies")

//jquery
// const $ = require( "jquery" );
//axios
const axios = require('axios');
//创建一个服务器
var app = express()
//bodyParser设置
app.use(bodyParser.urlencoded({extended:true}))
//连接mysql
var connection = mysql.createConnection({
  host: '47.106.135.2',
  user: 'TouPiao001',
  password: 'TouPiao001',
  port: '3306',
  database: 'TouPiao001'//上文说的名字
});
// 用户信息
var userInfo ={}
//cookies进行签名(加密)
var keys = ['qiaoyue'];
//静态文件托管
app.use('/views',express.static(__dirname+'/views'))
//创建当前引擎使用的模版
//也就是当 需要返回页面的时候就会在设置的文件里面进行查找然后进行返回
//比如需要在下一层 admin
//那么就路径就写上是 admin/ssss不需要加 html 因为下面已经定义的后缀
//1. 模版引擎的名称 同样也是后缀 2.用于解析的方法
app.engine('html',swig.renderFile)
//模版存放的目录 1. views 2.目录
app.set('views','./views')
//注册模版引擎 1.view engine 2.和app.engine 第一个参数一样
app.set('view engine','html')
app.get('/', function (req, res) {
    res.render('index',{
      data:'heihei'
    })
  })
app.get('/ceshi', function (req, res) {
  // console.log()
  console.log(req.query.name)
})
// 接收手机号并发送短信
app.post('/SendSms',function(req,res){
  console.log(req.body.phone)
  axios({
    method: 'post',
    url: 'https://api.sms.jpush.cn/v1/codes',
    data: {
      mobile:req.body.phone,
    },
    headers:{
      'Content-Type':'application/json',
      'Authorization':'Basic N2RmNTM5NmY4ZjY4NDU0MDZmYjhkNTdlOmI4OWUxZDUzNDEyY2E2ZWQ4ZGFjMjgyMw==',
    }
  }).then(function(data){
    res.send(data.data)
  })
})
//接收手机验证码等信息 并注册 或者返回验证码错误
app.post('/addUser',function(req,res){
  console.log(req.body)
  var url = 'https://api.sms.jpush.cn/v1/codes/'+ req.body.vcodeID +'/valid'
  axios({
    method: 'post',
    url: url,
    data: {
      code:req.body.vcode,
    },
    headers:{
      'Content-Type':'application/json',
      'Authorization':'Basic N2RmNTM5NmY4ZjY4NDU0MDZmYjhkNTdlOmI4OWUxZDUzNDEyY2E2ZWQ4ZGFjMjgyMw==',
    }
  }).then(function(data){
    if(data.data.is_valid){
      // 验证码正确
      console.log(req.body)
      // 启动数据库
      // =======================================================
      connection.connect(); //启动连接！！！！
      var listlength = 0;
      var sql = 'SELECT uPhone FROM user where uPhone='+req.body.phone;
      connection.query(sql, function (err, ress) { //询问访问数据库，也就是去嫩那个数据库
        if (err) { //失败就报个错。
          console.log('[SELECT ERROR] - ', err.message);
          return;
        }
        console.log("数据库查的结果：");
        console.log(ress); //成功就输出下结果
        if(ress.length !== 0){
          listlength = 1
        }
      });
      // 等于0 为没有注册进行注册
      if(listlength == 0){
        sql = 'INSERT INTO user(uPhone, uPassword) VALUES('+req.body.phone+', "qiao123")'
        connection.query(sql, function (err, resss) { 
          if (err) { //失败就报个错。
            console.log('[SELECT ERROR] - ', err.message);
            return;
          }
          console.log(resss); //成功就输出下结果
          if(resss){
            userInfo['uphone'] = req.body.phone
            userInfo['isok'] = true
            //创建cookie对象
            var cookies = new Cookies(req,res, { keys: keys });
            cookies.set('userInfo',JSON.stringify(userInfo))
            res.send(userInfo)
          }
        })
      }else{
        // 等于1 为已经注册了直接返回cookie即可
        userInfo['uphone'] = req.body.phone
        userInfo['isok'] = true
        //创建cookie对象
        var cookies = new Cookies(req,res, { keys: keys });
        cookies.set('userInfo',JSON.stringify(userInfo))
        res.send(userInfo)
      }
      connection.end(); //结束连接！！！不能一直连着！！
      // =======================================================
    }else{
      res.send({isok:false})
    }
  })
})
// 开启服务器
app.listen(52179,()=>{
    console.log("开启成功。。。。。")
})